The deformation of objects such as characters is a common technique in computer animation. A popular method for assisting in the deformation of objects is to define a rig (e.g., a skeleton) for an object and a surface representation of the object that follows the motion of the rig. An animator can then control the rig, such as through the use of animation variables, to set a pose of the object. The pose can be used to determine the shape of the object.
However, in some cases, the shape of an object at a pose may be undesirable. For example, the resulting shape may be unappealing, unrealistic, or produce visual artifacts. To correct this, a user (e.g., an animator or rigger) may define a new shape at the pose. For example, the user might place the object into the pose, then manually alter the surface representation of the object to achieve a desired shape. This process can be repeated to determine a plurality of training poses, each associated with a shape indicated by the user. The shape of the object at intermediate poses can be interpolated from these training poses.
However, determining an effective interpolation algorithm may be challenging, especially for objects with production-level complexity. For example, such objects may have hundreds or thousands of animation variables that influence the shape of the object. For such objects, the number of training poses may bound only a tiny subset of the pose space. Further, in some cases, dozens or more of the animation variables may influence a single vertex of the object. Thus, it may be computationally prohibitive to use current techniques while providing precision in such circumstances.
Therefore, it is desirable to provide a method and system for the interpolation of shapes in an efficient manner.